package com.xsd.adapter.ObjectAdapter;

/**
 * @Description: 适配器类
 * @Author: zhoufuzong
 * @Created: 2021-02-14 15:21:35
 * @Version: 1.1.0
 */

/**
 * 对象适配器模式介绍
 * 1) 基本思路和类的适配器模式相同，只是将Adapter类作修改，不是继承src类，而
 * 是持有src类的实例，以解决兼容性的问题。 即：持有 src类，实现 dst 类接口，
 * 完成src->dst的适配
 * 2) 根据“合成复用原则”，在系统中尽量使用关联关系来替代继承关系。
 * 3) 对象适配器模式是适配器模式常用的一种
 */

/**
 * 对象适配器模式注意事项和细节
 * 1) 对象适配器和类适配器其实算是同一种思想，只不过实现方式不同。
 * 根据合成复用原则，使用组合替代继承， 所以它解决了类适配器必须继承src的
 * 局限性问题，也不再要求dst必须是接口。
 * 2) 使用成本更低，更灵活
 */
public class VolatageAdapter  implements IVolatage5V {

    private  Volatage220V volatage220V;

    public VolatageAdapter(Volatage220V volatage220V) {
        this.volatage220V = volatage220V;
    }

    @Override
    public int output5V() {
        // 获取220v 电压
        int dest=0;
        if (volatage220V!=null){
            int srcV = volatage220V.outPut220V();
            System.out.println("对象适配器模式 start work");
            dest = srcV/44; // 转成5V;
            System.out.println("电压 switch finished ");
        }



        return dest;
    }
}
